Перейти к основному содержимому

Установка платформы

Аутентификация в Docker

Для установки платформы Compressa вам понадобится уникальный токен доступа, который предоставит команда.

Установите переменную окружения с токеном:

export COMPRESSA_TOKEN=<TOKEN>

Пройдите аутентификацию в Docker с вашим токеном:

echo $COMPRESSA_TOKEN | docker login -u compressa --password-stdin

Базовая настройка

Сначала клонируйте репозиторий с конфигурацией:

git clone -b gm/compressa-platform git@github.com:compressa-ai/compressa-deploy.git
cd compressa-deploy

Репозиторий содержит два основных файла, которые мы будем настраивать:

  • .env
  • docker-compose.yml

Укажите идентификаторы GPU в файле .env:

DOCKER_GPU_IDS_1=<ID1>
DOCKER_GPU_IDS_2=<ID2>

По умолчанию сервисы будут использовать порт 8080.

Если вам нужно изменить это, измените настройки в файле docker-compose.yml для контейнера compressa-api-nginx.

Настройка хранилища

По умолчанию контейнеры используют следующий путь для хранилища:

  • compressa - ./data/compressa
    У этой директории должны быть права 777, которые можно установить с помощью команды:
    chmod 777 -R ./data/compressa

Вы можете изменить путь к хранилищу в файле docker-compose.yml.

Запуск сборки

Пройдя предыдущие шаги, вы можете запустить решение с помощью команды:

docker compose up --build

Запуск LLM и Embeddings моделей

Когда сервисы запущены, необходимо развернуть LLM и Embeddings модели.

Для корректной работы модуля InsightStream RAG нам нужна LLM модель Qwen 2.5-14B и Embeddings модель SFR-Embedding-Mistral

Модели можно развернуть с помощью REST API или через Swagger UI

REST API доступны по адресам:

  • SERVER_NAME:$PORT/api/chat/
  • SERVER_NAME:$PORT/api/embeddings/

Swagger UI доступен по адресам:

  • SERVER_NAME:$PORT/api/chat/docs
  • SERVER_NAME:$PORT/api/embeddings/docs

Вот команды для развертывания указанных моделей с использованием curl:

Загрузка LLM модели Compressa-Qwen2.5-14B в Compressa:

curl -X 'POST' \
'http://$SERVER_NAME:$PORT/api/chat/v1/models/add/?model_id=compressa-ai%2FCompressa-Qwen2.5-14B-Instruct' \
-H 'accept: application/json' \
-d ''

Загрузка Embeddings модели SFR-Embedding-Mistral в Compressa:

curl -X 'POST' \
'http://$SERVER_NAME:$PORT/api/embeddings/v1/models/add/?model_id=Salesforce%2FSFR-Embedding-Mistral' \
-H 'accept: application/json' \
-d ''

Когда загрузка завершена, можно развернуть модели:

Запуск LLM модели

curl -X 'POST' "$SERVER_NAME:$PORT/api/chat/v1/deploy/" \
-H 'accept: application/json' \
-H 'Authorization: Bearer EMPTY' \
-H 'Content-Type: application/json' -d '{
"model_id": "compressa-ai/Compressa-Qwen2.5-14B-Instruct",
"served_model_name": "Compressa-LLM",
"dtype": "float16",
"backend": "lmdeploy"
}'

Запуск Embeddings модели

curl -X 'POST' "$SERVER_NAME:$PORT/api/embeddings/v1/deploy/" \
-H 'accept: application/json' \
-H 'Authorization: Bearer EMPTY' \
-H 'Content-Type: application/json' -d '{
"model_id": "Salesforce/SFR-Embedding-Mistral",
"served_model_name": "Compressa-Embedding",
"dtype": "float16"
}'

Важно! Модули ETL и Rerank будут установлены автоматически и не требуют выполнения отдельных команд.

После успешной установки всех модулей и запуска моделей, они готовы к использованию. Как отправлять запросы через REST API или Python клиент рассказываем здесь.

Тестирование

Успешный деплой можно проверить с помощью следующих запросов:

LLM Модель

curl -X 'POST' "$SERVER_NAME:$PORT/v1/chat/completions" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' -d '{
"model": "Compressa-LLM",
"messages": [{"role": "user", "content": "Напиши сказку на ночь про добрый искусственный интеллект!"}],
"stream": false
}'

Embeddings Модель

curl -X 'POST' "$SERVER_NAME:$PORT/v1/embeddings" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' -d '{
"model": "Compressa-Embedding",
"input": "Document 1",
"encoding_format": "float"
}'

Rerank Модель

curl -X POST "$SERVER_NAME:$PORT/v1/rerank" -H "accept: application/json" -H "Content-Type: application/json" -d '{
"model": "Compressa-ReRank",
"query": "Query?",
"documents": [
"document 1",
"document 2",
"document 3"
],
"return_documents": false
}'

Для работы с модулем InsightStream RAG, вам понадобится выполнить еще один шаг